class Arguments {

    public String description( String text )
    {
        String wrappedText = wrapText( text, LINE_LENGTH );
        if ( namedArgs.isEmpty() )
        {
            return wrappedText;
        }

        wrappedText = String.join( NEWLINE + NEWLINE, wrappedText, "options:" );

        //noinspection OptionalGetWithoutIsPresent handled by if-statement above
        final int alignLength = namedArgs.values().stream()
                .map( a -> a.optionsListing().length() )
                .reduce( 0, Integer::max );

        return String.join( NEWLINE, wrappedText,
                namedArgs.values().stream()
                        .map( c -> formatArgumentDescription( alignLength, c ) )
                        .collect( Collectors.joining( NEWLINE ) ) );
    }

    public  Arguments();

}