anchor.diff:      });
     }
   
  -  void _writeParamComment(StringSink sink, String name, Map description) {
  +  void _writeParamCommentHeader(StringSink sink, String name, String description) {
       sink.write("   *\n");
       sink.write("   * [$name]");
  -    if (description.containsKey("description")) {
  -      sink.write(" - ${description["description"]}");
  +    if (description != null) {
  +      sink.write(" - ${description}");
       }
       sink.write("\n");
  -    if (description.containsKey("default")) {
  -      sink.write("   *   Default: ${description["default"]}\n");
  -    }
  -    if (description.containsKey("minimum")) {
  -      sink.write("   *   Minimum: ${description["minimum"]}\n");
  -    }
  -    if (description.containsKey("maximum")) {
  -      sink.write("   *   Maximum: ${description["maximum"]}\n");
  -    }
  -    if (description.containsKey("repeated") && description["repeated"] == true) {
  +  }
  +
  +  void _writeParamComment(StringSink sink, String name, JsonSchema description) {
  +    _writeParamCommentHeader(sink, name, description.description);
  +    if (description.defaultProperty != null) {
  +      sink.write("   *   Default: ${description.defaultProperty}\n");
  +    }
  +    if (description.minimum != null) {
  +      sink.write("   *   Minimum: ${description.minimum}\n");
  +    }
  +    if (description.maximum != null) {
  +      sink.write("   *   Maximum: ${description.maximum}\n");
  +    }
  +    if (description.repeated == true) {
         sink.write("   *   Repeated values: allowed\n");
       }
  -    if (description.containsKey("enum")) {
  +    if (description.enumProperty != null) {
         sink.write("   *   Allowed values:\n");
  -      for (var i = 0; i < description["enum"].length; i++) {
  -        sink.write("   *     ${description["enum"][i]}");
  -        if (description.containsKey("enumDescriptions")) {
  -          sink.write(" - ${description["enumDescriptions"][i]}");
  +      for (var i = 0; i < description.enumProperty.length; i++) {
  +        sink.write("   *     ${description.enumProperty[i]}");
  +        if (description.enumDescriptions != null) {
  +          sink.write(" - ${description.enumDescriptions[i]}");
           }
           sink.write("\n");
         }
  
positive.code:           var paramSchema = data.parameters[param];
            var type = _getDartType(paramSchema);
            var variable = escapeParameter(cleanName(param));
            _writeParamComment(sink, variable, paramSchema.toJson());
            if (paramSchema.repeated == true) {
              params.add("core.List<$type> $variable");
            } else {
  
negative.code: 
      if (data.request != null) {
        params.add("${_getRef(data.request)} request");
        _writeParamCommentHeader(sink, "request", "${_getRef(data.request)} to send in this request");
      }
      if (data.parameterOrder != null && data.parameters != null) {
        data.parameterOrder.forEach((param) {
  