code: function normalizeRequired(schema) {
      if (!defined(schema.properties) || !schema.hasOwnProperty('properties')) {
          return schema;
      }
  
      // Transfer required to a local variable.
      var requiredProperties = Array.isArray(schema.required) ? schema.required : [];
      schema.required = undefined;
  
      for (var name in schema.properties) {
          if (schema.properties.hasOwnProperty(name)) {
              var property = schema.properties[name];
              property = normalizeRequired(property);
  
              if (requiredProperties.indexOf(name) >= 0) {
                  property.required = true;
              }
          }
      }
  
      return schema;
  }
docs: ////////////////////////////////////////////////////////////////////////////// 
  @function normalizeRequired
  Schema3 used a bool attribute on an individual property to indicate if it was
  required or not.  Schema4 uses an array attribute on the parent root that
  references properties by name that should be considered required.  We'll normalize
  to bool attributes on the individual properties so that the markdown generation
  logic can be shared amongst the different schema resolvers.
  @param  {object} schema - The json schema object that needs the 'required' properties to be normalized.
  @return {object} The normalized json schema object