class ChangeLine extends Component {

  private static final int DEFAULT_WIDTH = 2;
  private static final String DEFAULT_COLOR = "#3D9970";

  private final String color;
  private final int width;

  private ChangeLine(LineBuilder lineBuilder) {
    color = lineBuilder.color;
    width = lineBuilder.width;
  }

  @Override
  public String asJavascript() {
    return asJSON();
  }

  @Override
  protected Map<String, Object> getJSONContext() {<FILL_FUNCTION_BODY>}

  @Override
  protected Map<String, Object> getContext() {
    return getJSONContext();
  }

  public static LineBuilder builder() {
    return new LineBuilder();
  }

  public static class LineBuilder {

    private String color = DEFAULT_COLOR;
    private int width = DEFAULT_WIDTH;

    /** Sets the color of line bounding the box(es). */
    public LineBuilder color(String color) {
      this.color = color;
      return this;
    }

    /**
     * Sets the width (in px) of line bounding the box(es).
     *
     * @param width greater than or equal to 0
     */
    public LineBuilder width(int width) {
      Preconditions.checkArgument(width >= 0);
      this.width = width;
      return this;
    }

    public ChangeLine build() {
      return new ChangeLine(this);
    }
  }
}

    Map<String, Object> context = new HashMap<>();
    if (!color.equals(DEFAULT_COLOR)) context.put("color", color);
    if (width != DEFAULT_WIDTH) context.put("width", width);
    return context;
  
<methods>public non-sealed void <init>() ,public java.lang.String asJSON() ,public abstract java.lang.String asJavascript() ,public java.lang.String toString() <variables>private final PebbleEngine engine,protected static final ObjectMapper mapper