@Override public ClassifyDocumentResult classify(long collectionSequenceId, Document document) { DocumentUnderEvaluationImpl documentUnderEvaluation = new DocumentUnderEvaluationImpl(document, conditionEngineMetadata, apiProperties); documentUnderEvaluation.addMetadataString(DocumentFields.KV_Metadata_Present_FieldName, String.valueOf(document.getFullMetadata())); EnvironmentSnapshot environmentSnapshot = getEnvironmentSnapshot(collectionSequenceId); // Use the same snapshot across both calls, JIC it gets invalidated between the 2. ConditionEngineResult conditionEngineResult = conditionEngine.evaluate(documentUnderEvaluation, collectionSequenceId, environmentSnapshot); ClassifyDocumentResult classifyResult = ClassifyDocumentResult.create(conditionEngineResult, conditionEngineMetadata); classifyResult.resolvedPolicies = resolvePolicies(environmentSnapshot, document, conditionEngineResult); return classifyResult; }