private void updateCompletions( JTextComponent comp ) {
			FlatSyntaxTextArea fsta = (FlatSyntaxTextArea) comp;
			Set<String> keys = fsta.propertiesSupport.getAllKeys();
			if( Objects.equals( keys, lastKeys ) )
				return;
			lastKeys = keys;

			completions.clear();
			outer:
			for( String key : keys ) {
				while( key.startsWith( "[" ) ) {
					// remove prefix
					int closeIndex = key.indexOf( ']' );
					if( closeIndex < 0 )
						continue outer;

					String prefix = key.substring( 0, closeIndex + 1 );
					if( FlatLaf.getUIKeySpecialPrefixes().contains( prefix ) )
						continue outer; // can not reference properties with special prefix

					key = key.substring( closeIndex + 1 );
				}

				if( key.startsWith( "*." ) ) {
					// resolve wildcard
					for( String k : FlatThemePropertiesSupport.getKeysForWildcard( key ) ) {
						if( !keys.contains( k ) )
							completions.add( new BasicCompletion( this, "$".concat( k ) ) );
					}
					continue;
				}

				if( !key.startsWith( "@" ) )
					key = "$".concat( key );

				BasicCompletion completion = new BasicCompletion( this, key );
				if( key.startsWith( "@" ) )
					completion.setRelevance( 1 );
				completions.add( completion );
			}
			Collections.sort( completions );
		}
A completion provider for references within values. Only keys defined
in current properties file and in base properties files are used.
flatlaf-theme-editor/src/main/java/com/formdev/flatlaf/themeeditor/FlatCompletionProvider.java