function revealInfo(a\MetadataSet $ms)
{
    echo "<h1>", $ms->getName(), "</h1>", S_H2, "Wired Fields", E_H2, S_UL;
    foreach (a\MetadataSet::$wired_fields as $field_name) {
        $required_method_name = u\StringUtility::getMethodName($field_name) . "FieldRequired";
        $visibility_method_name = u\StringUtility::getMethodName($field_name) . "FieldVisibility";
        echo S_LI, $field_name . ", " . ($ms->{$required_method_name}() ? "required" : "not required") . ", " . $ms->{$visibility_method_name}(), E_LI;
    }
    echo E_UL;
    if ($ms->hasDynamicMetadataFieldDefinitions()) {
        echo S_H2, "Dynamic Fields", E_H2, S_UL;
        foreach ($ms->getDynamicMetadataFieldDefinitionNames() as $dmfs_name) {
            $dmfd = $ms->getDynamicMetadataFieldDefinition($dmfs_name);
            echo S_LI, $dmfd->getName(), " &mdash; ", "type: ", $dmfd->getFieldType(), "; ", !$dmfd->isText() ? "possible values: " . implode(";", $dmfd->getPossibleValueStrings()) . "; " : "", $dmfd->isRequired() ? "required" : "not required", "; ", E_LI;
        }
        echo E_UL;
    } else {
        echo "This MS does not have dynamic fields", BR;
    }
}
        echo "Tis true", BR;
    } else {
        echo "Tis false", BR;
    }
    if (u\StringUtility::stringToBool(0)) {
        echo "Tis true", BR;
    } else {
        echo "Tis false", BR;
    }
    if (u\StringUtility::stringToBool("")) {
        echo "Tis true", BR;
    } else {
        echo "Tis false", BR;
    }
    echo u\StringUtility::boolToString(true), BR;
    echo u\StringUtility::startsWith("Hello", "He") ? "yes" : "no", BR;
    echo u\StringUtility::startsWith("Hello", "e") ? "yes" : "no", BR;
    echo u\StringUtility::removeSiteNameFromPath("site://cascade-admin/web-services/api/utility-classes/debug-utility"), BR;
    echo u\StringUtility::getParentPathFromPath("/web-services/api/utility-classes/debug-utility"), BR;
    echo u\StringUtility::getNameFromPath("/web-services/api/utility-classes/debug-utility"), BR;
    echo u\StringUtility::getMethodName("structuredData"), BR;
    u\DebugUtility::dump(u\StringUtility::getExplodedStringArray(";", "this;0;that;3;these"));
    echo u\StringUtility::getFullyQualifiedIdentifierWithoutPositions("this;0;that;3;these"), BR;
    echo u\StringUtility::endsWith("Hello", "lo") ? "yes" : "no", BR;
    echo u\StringUtility::endsWith("Hello", "l") ? "yes" : "no", BR;
    echo u\ReflectionUtility::getClassDocumentation("cascade_ws_utility\\StringUtility", true);
} catch (\Exception $e) {
    echo S_PRE . $e . E_PRE;
} catch (\Error $er) {
    echo S_PRE . $er . E_PRE;
}
 public function reportLast($type, $days_inclusive, $direction)
 {
     $this->checkRootFolder();
     $at = $this->root->getAssetTree();
     $method = u\StringUtility::getMethodName($type);
     $params = array();
     $params['method'] = $method;
     $params['day'] = $days_inclusive;
     $params['direction'] = $direction;
     $params['cache'] = $this->cache;
     $this->results[File::TYPE] = array();
     $this->results[Page::TYPE] = array();
     $at->traverse(array(File::TYPE => array("Report::assetTreeReportLast"), Page::TYPE => array("Report::assetTreeReportLast")), $params, $this->results);
     return $this->results;
 }
 public static function getWiredFieldMethodName($field_name)
 {
     if (self::isWiredField($field_name)) {
         return u\StringUtility::getMethodName($field_name);
     }
     return NULL;
 }