class NamingConventions {
  /**
   * JavaBeans naming convention for accessors.
   */
  public static final NamingConvention JAVABEANS_ACCESSOR = new NamingConvention() {
    public boolean applies(String propertyName, PropertyType propertyType) {<FILL_FUNCTION_BODY>}

    @Override
    public String toString() {
      return "Javabeans Accessor";
    }
  };

  /**
   * JavaBeans naming convention for mutators.
   */
  public static final NamingConvention JAVABEANS_MUTATOR = new NamingConvention() {
    public boolean applies(String propertyName, PropertyType propertyType) {
      return PropertyType.FIELD.equals(propertyType)
          || (propertyName.startsWith("set") && propertyName.length() > 3);
    }

    @Override
    public String toString() {
      return "Javabeans Mutator";
    }
  };

  /**
   * Creates NameTransformer for builder.
   * @return a NamingConvention
   */
  public static NamingConvention builder() {
    return builder("");
  }

  /**
   * Creates NamingConvention for builder.
   *
   * @param prefix the prefix for the setter of the builder
   * @return a NamingConvention
   */
  public static NamingConvention builder(String prefix) {
    return new BuilderNamingConventions(prefix);
  }

  /**
   * Naming convention for builder.
   */
  private static class BuilderNamingConventions implements NamingConvention {
    private String prefix;

    private BuilderNamingConventions(String prefix) {
      this.prefix = prefix;
    }

    public boolean applies(String propertyName, PropertyType propertyType) {
      return PropertyType.METHOD.equals(propertyType) && propertyName.startsWith(prefix);
    }

    @Override
    public String toString() {
      return "Builder(prefix=" + prefix + ")";
    }
  }

  /**
   * Represents no naming convention. This convention
   * {@link NamingConvention#applies(String, PropertyType) applies} to all property names, allowing
   * all properties to be eligible for matching.
   */
  public static final NamingConvention NONE = new NamingConvention() {
    public boolean applies(String propertyName, PropertyType propertyType) {
      return true;
    }

    @Override
    public String toString() {
      return "None";
    }
  };
}

      return PropertyType.FIELD.equals(propertyType)
          || (propertyName.startsWith("get") && propertyName.length() > 3)
          || (propertyName.startsWith("is") && propertyName.length() > 2);
    
<no_super_class>