public static function assetTreeReportPageFieldValue(aohs\AssetOperationHandlerService $service, p\Child $child, $params = NULL, &$results = NULL)
 {
     if (!isset($params['field-value'])) {
         throw new e\ReportException(S_SPAN . "The \$field-value array is not set. " . E_SPAN);
     }
     if (!isset($params['cache'])) {
         throw new e\ReportException(S_SPAN . c\M::NULL_CACHE . E_SPAN);
     }
     $cache = $params['cache'];
     $type = $child->getType();
     // skip irrelevant children
     if ($type != Page::TYPE && $type != Folder::TYPE) {
         return;
     }
     $field_value = $params['field-value'];
     if (!is_array($field_value)) {
         throw new e\ReportException(S_SPAN . "The \$field-value array is not set. " . E_SPAN);
     }
     $count = count($field_value);
     //if( self::DEBUG && self::DUMP ) { u\DebugUtility::dump( $field_value ); }
     //if( self::DEBUG ) { u\DebugUtility::out( "Count: $count" ); }
     if ($count == 0) {
         return;
     } else {
         if ($count > 1) {
             if (isset($params['disjunctive'])) {
                 $disjunctive = $params['disjunctive'];
             } else {
                 $disjunctive = true;
             }
         }
     }
     $page = $cache->retrieveAsset($child);
     $metadata = $page->getMetadata();
     if ($count == 1) {
         $identifier_value = $field_value[0];
         $keys = array_keys($identifier_value);
         $identifier = $keys[0];
         $value = trim($identifier_value[$identifier]);
         // wired fields
         if (Metadata::isWiredField($identifier)) {
             $method = Metadata::getWiredFieldMethodName($identifier);
             //if( self::DEBUG ) { u\DebugUtility::out( "A wired field." ); }
             //if( self::DEBUG ) { u\DebugUtility::out( $method ); }
             if ($value == "") {
                 $value = NULL;
             }
             $text = $metadata->{$method}();
             //if( self::DEBUG ) { u\DebugUtility::out( "Text: ". $text ); }
             //if( self::DEBUG ) { u\DebugUtility::out( is_null( $metadata->$method() ) ? 'NULL' :  ); }
             if ($metadata->{$method}() == $value) {
                 if (self::DEBUG) {
                     u\DebugUtility::out("Found a page");
                 }
                 $results[Page::TYPE][] = $child->getPathPath();
                 return;
             } else {
                 return;
             }
         } else {
             if ($metadata->hasDynamicField($identifier)) {
                 //if( self::DEBUG ) { u\DebugUtility::out( "Dynamic field found" ); }
                 $values = $metadata->getDynamicFieldValues($identifier);
                 if ($value == "") {
                     // this is not necessary
                     $value = NULL;
                 }
                 if (in_array($value, $values)) {
                     $results[Page::TYPE][] = $child->getPathPath();
                     return;
                 } else {
                     return;
                 }
             } else {
                 return;
             }
         }
     } else {
         //if( self::DEBUG ) { u\DebugUtility::out( "Count more than 1" ); }
         if ($disjunctive) {
             // pass any test
             foreach ($field_value as $field_value_pair) {
                 if (self::DEBUG && self::DUMP) {
                     u\DebugUtility::dump($field_value_pair);
                 }
                 $keys = array_keys($field_value_pair);
                 $identifier = $keys[0];
                 $value = trim($field_value_pair[$identifier]);
                 // wired fields
                 if (Metadata::isWiredField($identifier)) {
                     $method = Metadata::getWiredFieldMethodName($identifier);
                     if ($metadata->{$method}() == $value) {
                         $results[Page::TYPE][] = $child->getPathPath();
                         return;
                     } else {
                         continue;
                     }
                 } else {
                     if ($metadata->hasDynamicField($identifier)) {
                         $values = $metadata->getDynamicFieldValues($identifier);
                         if (in_array($value, $values)) {
                             $results[Page::TYPE][] = $child->getPathPath();
                             return;
                         } else {
                             continue;
                         }
                     } else {
                         return;
                     }
                 }
             }
         } else {
             //if( self::DEBUG ) { u\DebugUtility::out( "Conjunctive" ); }
             //if( self::DEBUG && self::DUMP ) { u\DebugUtility::dump( $field_value ); }
             // must pass all the tests
             foreach ($field_value as $field_value_pair) {
                 //if( self::DEBUG && self::DUMP ) { u\DebugUtility::dump( $field_value_pair ); }
                 $keys = array_keys($field_value_pair);
                 $identifier = $keys[0];
                 $value = trim($field_value_pair[$identifier]);
                 //if( self::DEBUG ) { u\DebugUtility::out( "Identifier: $identifier" ); }
                 //if( self::DEBUG ) { u\DebugUtility::out( "Value: $value" ); }
                 // wired fields
                 if (Metadata::isWiredField($identifier)) {
                     $method = Metadata::getWiredFieldMethodName($identifier);
                     if ($metadata->{$method}() == $value) {
                         continue;
                     } else {
                         return;
                     }
                 } else {
                     if ($metadata->hasDynamicField($identifier)) {
                         $values = $metadata->getDynamicFieldValues($identifier);
                         if (in_array($value, $values)) {
                             continue;
                         } else {
                             return;
                         }
                     } else {
                         return;
                     }
                 }
             }
             $results[Page::TYPE][] = $child->getPathPath();
         }
     }
 }