package org.luxons.sevenwonders.game.data.definitions;

import org.luxons.sevenwonders.game.Settings;

/**
 * Represents a deserialized JSON definition of some data about the game. It is settings-agnostic. An instance of
 * in-game data can be generated from this, given specific game settings.
 *
 * @param <T>
 *         the type of in-game object that can be generated from this definition
 */
public interface Definition<T> {

    T create(Settings settings);
}

@@ -424,16 +424,399 @@
 n%3CT%3E %7B%0A%0A
+    /**%0A     * Creates a T object from the given settings. This method mustn't mutate this Definition as it may be called%0A     * multiple times with different settings.%0A     *%0A     * @param settings%0A     *         the game settings to use to generate a game-specific object from this definition%0A     *%0A     * @return the new game-specific object created from this definition%0A     */%0A
     T cr

Add doc to Definition.create() to explicitly state the "no side-effect" requirement