code: @Override
      public Collection<PluginComponent> deserialize(JsonElement element, Type type, JsonDeserializationContext context)
          throws JsonParseException
      {
          JsonObject obj = element.getAsJsonObject();
          JsonArray components = obj.getAsJsonArray("components");
          List<PluginComponent> values = new ArrayList<PluginComponent>();
          if(components != null && components.isJsonArray())
          {
              for(JsonElement component : components)
                  values.add(gson.fromJson(component, PluginComponent.class));
          }
          return values;
      }
docs: Gson invokes this call-back method during deserialization when it encounters a field of the specified type.
  @param element The Json data being deserialized
  @param type The type of the Object to deserialize to
  @param context The JSON deserialization context
  @return The plugin components