IntelliJ IDEA offers smart and type-aware code completion. It knows when you may want to cast to a type and is also aware of the run-time type checks that you made, after which you can perform cast and method invocation in a single action. IntelliJ IDEA easily recognizes one language inside another -- language injections, such as SQL inside a Java, HTML inside JavaScript, etc.