public abstract class nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect extends java.lang.Object implements nl.basjes.parse.useragent.Analyzer, nl.basjes.parse.useragent.config.AnalyzerConfigHolder, nl.basjes.parse.useragent.AnalyzerPreHeater, java.io.Serializable
{
protected nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer clientHintsAnalyzer;
private nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker;
private nl.basjes.parse.useragent.config.AnalyzerConfig analyzerConfig;
private static final java.util.Map HEADER_SPECIFICATIONS;
public nl.basjes.parse.useragent.config.AnalyzerConfig getConfig()
{
nl.basjes.parse.useragent.config.AnalyzerConfig v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.config.AnalyzerConfig analyzerConfig>;
return v;
}
public java.util.List getPreheatTestCases()
{
java.util.List v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = virtualinvoke v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: java.util.List getTestCases()>();
return v;
}
protected nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker getMatchMaker()
{
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
return v;
}
public static void configureKryo(java.lang.Object)
{
java.lang.Object v;
v := @parameter: java.lang.Object;
staticinvoke <nl.basjes.parse.useragent.utils.KryoConfig: void configureKryo(com.esotericsoftware.kryo.Kryo)>(v);
return;
}
protected void <init>()
{
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer;
specialinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: void <init>()>();
v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer clientHintsAnalyzer> = v;
return;
}
public synchronized void destroy()
{
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: void destroy()>();
return;
}
public void loadResources(java.lang.String)
{
java.lang.String v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: java.lang.String;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: void loadResources(java.lang.String)>(v);
return;
}
public void loadResources(java.lang.String, boolean, boolean)
{
java.lang.String v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: java.lang.String;
v := @parameter: boolean;
v := @parameter: boolean;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: void loadResources(java.lang.String,boolean,boolean)>(v, v, v);
return;
}
public void initializeMatchers()
{
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: void initializeMatchers()>();
return;
}
public java.util.Set getAllPossibleFieldNames()
{
java.util.Set v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: java.util.Set getAllPossibleFieldNames()>();
return v;
}
public java.util.List getAllPossibleFieldNamesSorted()
{
java.util.List v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: java.util.List getAllPossibleFieldNamesSorted()>();
return v;
}
public synchronized void setVerbose(boolean)
{
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
boolean v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: boolean;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: void setVerbose(boolean)>(v);
return;
}
public synchronized void reset()
{
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: void reset()>();
return;
}
public nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent parse(java.lang.String)
{
nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent v;
java.util.Map v;
java.lang.String v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: java.lang.String;
v = staticinvoke <java.util.Collections: java.util.Map singletonMap(java.lang.Object,java.lang.Object)>("User-Agent", v);
v = virtualinvoke v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent parse(java.util.Map)>(v);
return v;
}
public nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent parse(java.util.Map)
{
nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent v;
java.util.Map v;
java.util.Set v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: java.util.Map;
v = new nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v = virtualinvoke v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: java.util.Set getWantedFieldNames()>();
specialinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void <init>(java.util.Collection)>(v);
virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void addHeader(java.util.Map)>(v);
v = virtualinvoke v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent parse(nl.basjes.parse.useragent.UserAgent$MutableUserAgent)>(v);
return v;
}
public nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent parse(nl.basjes.parse.useragent.UserAgent$MutableUserAgent)
{
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v, v;
nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent v, v;
java.util.Map v;
int v;
java.lang.String v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v, v, v, v, v;
nl.basjes.parse.useragent.clienthints.ClientHints v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v, v, v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
if v != null goto label;
v = new nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = new nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v = null;
specialinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: void <init>(java.lang.String)>(v);
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: nl.basjes.parse.useragent.UserAgent$MutableUserAgent parse(nl.basjes.parse.useragent.UserAgent$MutableUserAgent)>(v);
specialinvoke v.<nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent: void <init>(nl.basjes.parse.useragent.UserAgent)>(v);
return v;
label:
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: nl.basjes.parse.useragent.UserAgent$MutableUserAgent parse(nl.basjes.parse.useragent.UserAgent$MutableUserAgent)>(v);
v = virtualinvoke v.<nl.basjes.parse.useragent.UserAgent$MutableUserAgent: java.util.Map getHeaders()>();
v = interfaceinvoke v.<java.util.Map: int size()>();
if v <= 1 goto label;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer clientHintsAnalyzer>;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.parse.useragent.clienthints.ClientHints parse(java.util.Map)>(v);
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer clientHintsAnalyzer>;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: nl.basjes.parse.useragent.UserAgent$MutableUserAgent merge(nl.basjes.parse.useragent.config.AnalyzerConfigHolder,nl.basjes.parse.useragent.UserAgent$MutableUserAgent,nl.basjes.parse.useragent.clienthints.ClientHints)>(v, v, v);
label:
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: nl.basjes.parse.useragent.UserAgent$MutableUserAgent hardCodedPostProcessing(nl.basjes.parse.useragent.UserAgent$MutableUserAgent)>(v);
v = new nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent;
specialinvoke v.<nl.basjes.parse.useragent.UserAgent$ImmutableUserAgent: void <init>(nl.basjes.parse.useragent.UserAgent)>(v);
return v;
}
public java.util.List supportedClientHintHeaders()
{
java.util.List v;
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer clientHintsAnalyzer>;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: java.util.List supportedClientHintHeaders()>();
return v;
}
public boolean isSupportedClientHintHeader(java.lang.String)
{
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
java.lang.String v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
boolean v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: java.lang.String;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer clientHintsAnalyzer>;
v = virtualinvoke v.<nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer: boolean isSupportedClientHintHeader(java.lang.String)>(v);
return v;
}
private static void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)
{
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification v;
java.lang.String v;
java.util.Map v;
v := @parameter: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification;
v = <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: java.util.Map HEADER_SPECIFICATIONS>;
v = virtualinvoke v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification: java.lang.String getHeaderName()>();
interfaceinvoke v.<java.util.Map: java.lang.Object put(java.lang.Object,java.lang.Object)>(v, v);
return;
}
public java.util.Map getAllSupportedHeaders()
{
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
java.util.Map v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: java.util.Map HEADER_SPECIFICATIONS>;
return v;
}
public boolean isWantedField(java.lang.String)
{
java.lang.String v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
boolean v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: java.lang.String;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: boolean isWantedField(java.lang.String)>(v);
return v;
}
public java.util.Set getWantedFieldNames()
{
java.util.Set v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: java.util.Set getWantedFieldNames()>();
return v;
}
protected void configure(nl.basjes.parse.useragent.config.AnalyzerConfig, boolean, boolean)
{
nl.basjes.parse.useragent.config.AnalyzerConfig v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: nl.basjes.parse.useragent.config.AnalyzerConfig;
v := @parameter: boolean;
v := @parameter: boolean;
v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.config.AnalyzerConfig analyzerConfig> = v;
v = new nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker;
specialinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: void <init>(nl.basjes.parse.useragent.config.AnalyzerConfig,boolean,boolean)>(v, v, v);
v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker> = v;
return;
}
public nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect cloneWithSharedAnalyzerConfig(boolean, boolean)
{
nl.basjes.parse.useragent.config.AnalyzerConfig v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v, v;
boolean v, v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: boolean;
v := @parameter: boolean;
v = virtualinvoke v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect createNewInstance()>();
v = virtualinvoke v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.config.AnalyzerConfig getConfig()>();
virtualinvoke v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void configure(nl.basjes.parse.useragent.config.AnalyzerConfig,boolean,boolean)>(v, v, v);
return v;
}
protected abstract nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect createNewInstance();
public java.util.List getMatches()
{
java.util.List v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: java.util.List getMatches()>();
return v;
}
public synchronized java.util.List getUsedMatches(nl.basjes.parse.useragent.UserAgent$MutableUserAgent)
{
java.util.List v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
nl.basjes.parse.useragent.UserAgent$MutableUserAgent v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v := @parameter: nl.basjes.parse.useragent.UserAgent$MutableUserAgent;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: java.util.List getUsedMatches(nl.basjes.parse.useragent.UserAgent$MutableUserAgent)>(v);
return v;
}
public java.util.List getAllMatchers()
{
java.util.List v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: java.util.List getAllMatchers()>();
return v;
}
public nl.basjes.parse.useragent.analyze.MatcherList getTouchedMatchers()
{
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
nl.basjes.parse.useragent.analyze.MatcherList v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = virtualinvoke v.<nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker: nl.basjes.parse.useragent.analyze.MatcherList getTouchedMatchers()>();
return v;
}
public java.lang.String toString()
{
nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer v;
nl.basjes.parse.useragent.config.AnalyzerConfig v;
java.lang.String v;
nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect v;
v := @this: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer clientHintsAnalyzer>;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker matchMaker>;
v = v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: nl.basjes.parse.useragent.config.AnalyzerConfig analyzerConfig>;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (nl.basjes.parse.useragent.clienthints.ClientHintsAnalyzer,nl.basjes.parse.useragent.analyze.UserAgentStringMatchMaker,nl.basjes.parse.useragent.config.AnalyzerConfig)>(v, v, v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("AbstractUserAgentAnalyzerDirect{clientHintsAnalyzer=\u, matchMaker=\u, analyzerConfig=\u0001}");
return v;
}
static void <clinit>()
{
nl.basjes.parse.useragent.utils.springframework.util.LinkedCaseInsensitiveMap v;
nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification v, v, v, v, v, v, v, v, v, v, v, v;
v = new nl.basjes.parse.useragent.utils.springframework.util.LinkedCaseInsensitiveMap;
specialinvoke v.<nl.basjes.parse.useragent.utils.springframework.util.LinkedCaseInsensitiveMap: void <init>()>();
<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: java.util.Map HEADER_SPECIFICATIONS> = v;
v = new nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification;
specialinvoke v.<nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification: void <init>(java.lang.String,java.lang.String,java.lang.String,java.lang.String)>("User-Agent", "https://datatracker.ietf.org/doc/html/rfc7231#section-5.5.3", "The \"User-Agent\" header field contains information about the user agent originating the request,", "userAgent");
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUa: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaArch: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaBitness: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaFormFactor: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaFullVersion: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaFullVersionList: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaMobile: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaModel: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaPlatform: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaPlatformVersion: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
v = staticinvoke <nl.basjes.parse.useragent.clienthints.parsers.ParseSecChUaWoW64: nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification getHeaderSpecification()>();
staticinvoke <nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect: void addHeaderSpecification(nl.basjes.parse.useragent.AbstractUserAgentAnalyzerDirect$HeaderSpecification)>(v);
return;
}
}