docs: @Nullable
    static FillOptions fromFeature(@NonNull Feature feature) {
      if (feature.geometry() == null) {
        throw new RuntimeException("geometry field is required");
      }
      if (!(feature.geometry() instanceof Polygon)) {      return null;
      }
  
      FillOptions options = new FillOptions();
      options.geometry = (Polygon) feature.geometry();
      if (feature.hasProperty(PROPERTY_FILL_OPACITY)) {
        options.fillOpacity = feature.getProperty(PROPERTY_FILL_OPACITY).getAsFloat();
      }
      if (feature.hasProperty(PROPERTY_FILL_COLOR)) {
        options.fillColor = feature.getProperty(PROPERTY_FILL_COLOR).getAsString();
      }
      if (feature.hasProperty(PROPERTY_FILL_OUTLINE_COLOR)) {
        options.fillOutlineColor = feature.getProperty(PROPERTY_FILL_OUTLINE_COLOR).getAsString();
      }
      if (feature.hasProperty(PROPERTY_FILL_PATTERN)) {
        options.fillPattern = feature.getProperty(PROPERTY_FILL_PATTERN).getAsString();
      }
      if (feature.hasProperty(PROPERTY_IS_DRAGGABLE)) {
        options.isDraggable = feature.getProperty(PROPERTY_IS_DRAGGABLE).getAsBoolean();
      }
      return options;
    }