void createSpring(String letter) {
        Range distanceRange = grammar.getSpringCreationRange(letter);
        boolean excludeCrossings = grammar.getOptions().contains(excludeSpringCrossings);
        List<Mass> usableMasses = grammar.getGraph().findReachableMassesAndInputs(currentPoint, distanceRange, excludeCrossings);
        removeMassesInOwnSprings(currentPoint, usableMasses);

        if (usableMasses.isEmpty()) {
            return;
        }

        int randomIndex = random.nextInt(usableMasses.size());
        Mass randomValidMassInRange = usableMasses.get(randomIndex);
        grammar.getGraph().addSpring(currentPoint, randomValidMassInRange);
        currentPoint = randomValidMassInRange;
    }