private void registerFieldCalculator(FieldCalculator fieldCalculator) {
        String calculatedFieldName = fieldCalculator.getCalculatedFieldName();
        allFieldsForWhichACalculatorExists.add(calculatedFieldName);
        if (isWantedField(calculatedFieldName) ||
            dependenciesNeededByCalculators.contains(calculatedFieldName)) {
            fieldCalculators.add(fieldCalculator);
            dependenciesNeededByCalculators.addAll(fieldCalculator.getDependencies());
        }
    }
Parses and analyzes the useragent string provided in the MutableUserAgent instance.
NOTE: This method is internally synchronized because the way the analyzer works is not reentrant.
@param userAgent The MutableUserAgent instance that is to be parsed and that gets all results
@return An ImmutableUserAgent copy of the results that is suitable for further usage and caching.
analyzer/src/main/java/nl/basjes/parse/useragent/analyze/UserAgentStringMatchMaker.java